<?php
/**
 * @file imagece.php
 * @brief Clase para generar una imagen
 * @author DyrTechnologies
 * @version V 1.0
 * @date Wed Oct 03 2007
 *
 *  Part of the CEFIRO dynamic web framework project
 *
 *  Copyright (C) 2007  Dyr technologies http://dyrtech.com.ve
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/**
 * @class Clase imagece
 */

/**
 * @brief Define la ruta a la hoja de estilos para la imagen
 */

require_once(CEF_INPUT_OPT);
define("IMAGE_CSS",FULL_URL."image/image.css");


$image_instance = 0;

class imagece extends input_opt {
	private $name;
	private $src;
	private $alt;
	private $width;
	private $height;
	private $link;

	/**
	 * @brief Constructor por omision y parametrico de la clase, aprovechamos el hecho de que cada atributo tiene un valor por omision predefinido para no rehacer el constructor
	 *
	 * @param string $_src
	 * @param string $_alt
	 * @param string $_link
	 * @return imagece La instancia de la clase
	 */
	public function imagece($_name = '__image', $_src = '', $_alt = '', $_link = '', $_width = '', $_height = '', $_opt=''){

		/**
		 * @brief $image_instance es una variable para incrementar el numero de imagenes existentes
		 */
		global $image_instance;
		$image_instance++;

		/**
		 * @brief El nombre del widget es el tipo con el numero de la instancia que representa o el nombre pasado por omision en caso contrario
		 */

		if($_name!="__image")
		$this->name=$_name;
		else
		$this->name="image".$image_instance;

		/**
		 * @brief Se asignan los valores a los atributos de la clase imagen segun vengan dados al llamar al constructor de la misma
		 * @brief notar que existen valores por omision para cada atributo
		 */

		$this->src=$_src;
		$this->alt=$_alt;
		$this->link=$_link;
		$this->width=$_width;
		$this->height=$_height;

		/**
		 * @brief Si las opciones del campo no estan ajustadas lo hacemos explicitamente una instancia de input_opt
		 */
		if(!($_opt instanceof input_opt))
			$_opt = new input_opt();

		$this->equalize($_opt);
	}

	/**
	 * @brief Las funciones get_VAR devuelven las variables que tenga ajustadas la instancia: nombre (name), Origen (source), Valor Alternativo (alt), Enlace (link), opciones de entrada (opt)
	 *
	 * @return string Valor de VAR
	 */

	public function get_name(){
		return $this->name;
	}

	public function get_src(){
		return $this->src;
	}

	public function get_alt(){
		return $this->alt;
	}

	public function get_link(){
		return $this->link;
	}
	
	public function get_width(){
		return $this->width;
	}
	
	public function get_height(){
		return $this->height;
	}

	public function get_opt(){
		return $this->get_input_opt();
	}

	/**
	 * @brief Las funciones set_VAR ajustan las variables de la instancia: nombre (name), Origen (source), Valor Alternativo (alt), Enlace (link), opciones de entrada (opt)
	 */

	public function set_name($_name){
		$this->name=$_name;
	}

	public function set_src($_src){
		$this->src=$_src;
	}

	public function set_alt($_alt){
		$this->alt=$_alt;
	}

	public function set_link($_link){
		$this->link=$_link;
	}
	
	public function set_width($_width){
		$this->width = $_width;
	}
	
	public function set_height($_height){
		$this->height = $_height;
	}

	public function set_opt($_opt=''){
		if(!($_opt instanceof input_opt))
		  $_opt = new input_opt();
		$this->equalize($_opt);
	}

		/**
	 * @brief Ajusta los valores de smarty de acuerdo a lo especificado por los atributos de la instancia image
	 */
	private function smarty_image(){

		global $smarty;

		/**
		 * @brief Asignacion atributo por atributo a lo deseado en las variables de smarty
		 */
		$smarty->assign("name",$this->get_name());
		$smarty->assign("src",$this->get_src());
		$smarty->assign("alt",$this->get_alt());
		$smarty->assign("link",$this->get_link());
		$smarty->assign("width",$this->get_width());
		$smarty->assign("height",$this->get_height());
		$smarty->assign("onclick",$this->get_onClic());
		$smarty->assign("__opt",$this->get_input_opt());

		/**
		 * @brief Asigna la hoja de estilo que contiene los rasgos de la imagen a una variable
		 */
		$smarty->assign("imagecss",IMAGE_CSS);
	}

	/**
	 * @brief Asigna la imagen a la variable $smarty para su renderizacion
	 *
	 */
	public function display_image($fetch = false){
		global $smarty;
		$smarty->template_dir = dirname(__FILE__).'/';
		$this->smarty_image();
		if(!$fetch){
			$smarty->assign( $this->name , $smarty->fetch('image.tpl') );
			return 1;
		}
		else{
			return $smarty->fetch('image.tpl');
		}
	}
}